Шаг 10. Выводим список коммитов

Основная команда для вывода списка коммитов — git log. Вы будете использовать её часто, так она выводит хэши коммитов, а хэши нужны для других команд — например, чтобы срезать коммит.

Введена команда git log
Введена команда git log

Сейчас в выводе команды git log можно увидеть один коммит, но в настоящем проекте их может быть и сотня. Каждый коммит содержит хэш (тут уже полная его версия), имя автора коммита и его почту, дату и текст коммита. Сверху напротив хэша коммита также указана ветка, к которой относится данный коммит. В нашем случаем это ветка main, на неё же и направлен указатель HEAD.

Заранее отметим: когда коммитов будет много, они не станут помещаться на одном экране, и поэтому будут скрыты. Чтобы их просмотреть, нужно воспользоваться стрелками на клавиатуре, а чтобы выйти из команды, нужно нажать клавишу q.

Теперь мы перейдём к более важному — опциям git log. Разберём лишь основные.

--oneline — выводит хэш в укороченном формате, ветку, в которой был сделан коммит, а также текст коммита. Это опция, пожалуй, наиболее используемая, так как позволяет уместить большее количество коммитов на одном экране.

Введена команда git log --oneline
Введена команда git log --oneline

--stat — выводит список коммитов, как и обычная команда git log, а также статистику по изменённым файлам (какие файлы были изменены и количество изменённых строк). В нашем случае изменены два файла, добавлено 12 строк в файле index.html.

Введена команда git log --stat
Введена команда git log --stat

--shortstat — уменьшенная версия опции --stat. Она выводит только общее количество изменённых файлов и количество изменённых строк. На наш взгляд, опция --stat полезнее, так как информация о количестве изменённых файлов мало что даёт.

Введена команда git log --shortstat
Введена команда git log --shortstat

--name-only — выводит то же самое, что и команда git log, а также дополнительно список изменённых файлов.

Введена команда git log --name-only
Введена команда git log --name-only

--name-status — улучшенная версия --name-only. Выводит названия изменённых файлов и статус, который у них был на момент коммита. Позволяет отследить, какие файлы были добавлены или удалены.

Введена команда git log --name-status
Введена команда git log --name-status

--abbrev-commit — выводит то же самое, что и команда git log, но вместо длинного хэша будет короткий, как при использовании опции --oneline.

Введена команда git log --abbrev-commit
Введена команда git log --abbrev-commit

--relative-date— выводит то же самое, что и команда git log, только показывает дату в относительном формате, что порой бывает удобно (например, 2 дня назад).

Введена команда git log --relative-date
Введена команда git log --relative-date

-p — позволяет посмотреть не только то, что выводит обычная команда git log, но ещё и показывает, какие конкретно изменения были сделаны в каждом коммите. Отметим, что примерно такой же вывод есть и у команды git diff — она позволяет сравнивать коммиты и обычные файлы. Ей посвящён отдельный раздел, поэтому поговорим о ней позже.

Введена команда git log -p
Введена команда git log -p

Далее идёт опция, у которой нет зарезервированного имени. Звучит странно, но на деле она полезная. Сначала ставится -, а после без пробела пишется цифра. Цифра указывает, какое количество последних коммитов нужно отобразить. У неё точно такой же вывод, как и у команды git log.

Введена команда git log -1
Введена команда git log -1

--author=имя-автора — позволяет вывести коммиты от определённого автора. Когда в команде работает несколько человек, бывает трудно найти коммиты определённого сотрудника, а эта опция решает данную проблему. Имя автора при этом отмечается красным цветом.

Введена команда git log --author=SineYlo
Введена команда git log --author=SineYlo

--graph — дополнительно к стандартному выводу команды git log показывает ASCII-граф, в котором отображается история ветвлений и слияний. Так как у нас всего один коммит, то истории ветвлений особо нет.

Введена команда git log --graph
Введена команда git log --graph

--reverse — позволяет вывести коммиты в обратном хронологическом порядке, то есть сначала будут идти старые, а потом новые.

Введена команда git log --reverse
Введена команда git log --reverse

--after=дата — выводит коммиты, которые были сделаны после определённой даты. У этой команды есть аналог — опция --since=дата. Она выводит то же самое, что и --after=дата. Возможно, кому-то понравится запись через --since=дата, но чаще используют --after=дата. Во-первых, потому что привыкли. Во-вторых, есть ещё и --before=дата. При упоминании --before=дата явно будет проще вспомнить --after=дата, нежели --since=дата.

Введена команда git log --after=18.08.2022
Введена команда git log --after=18.08.2022

--before=дата — выводит, коммиты которые были сделаны до определённой даты.

Введена команда git log --before=20.08.2022
Введена команда git log --before=20.08.2022

Опций много, их будет трудно запомнить сразу. Поэтому запишите их куда-нибудь или добавьте страницу в закладки — когда появится специфическая задача, загляните в памятку и посмотрите опцию.

Дополнительно покажем, какие опции мы используем чаще всего в работе:

  1. git log --oneline
  2. git log --stat --abbrev-commit --relative-date --graph

Когда нужно вывести много коммитов на одном экране, используем первую связку, а в остальных случаях вторую, ибо она наиболее информативна.